<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>
        // 迭代器 iterator  // 有next()方法 下一步执行
        //内置迭代对象 entries keys values 这三个方法都自带迭代器 可以用for...of..循环取索引或值
        // 对象没有直接的迭代器方法
        // 数组 , set , map 方法有迭代器方法
        let arr = ["张安","李四","王五"];

        // let iterator = arr[Symbol.iterator](); // 这个next方法直打印每一项
        // let iterator = arr.entries(); // entries(),迭代器方法获取数组的每一项和索引
        // 迭代器的next(done:false 当done为true时迭代器迭代完成, value:数组里面的每一项和索引)
        // console.log(iterator.next());
        // console.log(iterator.next());
        // console.log(iterator.next());
        // console.log(iterator.next());

        // for...of..循环取索引或值
        // for(let [key,val] of arr.entries()){
        //     console.log(key,val);// key 是索引 val 是每一项
        // }




        // 生成器 // 相当于用来生成迭代器
        function *get(){
            yield 1;
            yield 2;
            yield 3
        }
        let iterator = get();
        // console.log(iterator.next());
        // console.log(iterator.next());
        // console.log(iterator.next());
        // console.log(iterator.next());

        for(let val of iterator){
            console.log(val);
        }










    </script>
</body>
</html>